/**
 * @Copyright:Copyright (c) 1992 - 2015
 * @Company: TengTong
 */
package com.tengtong.duang.beans.core;

/**
 * Class 信息封装接口
 *
 * @author Jai
 * @since: v1.0
 */
public interface BeanInfo {

	/**
	 * Bean 的名称，如果没有明确给出，则会是 class.getName()
	 * 
	 * @return
	 */
	public String getBeanName();
	
	/**
	 * Bean 的 class
	 * @return
	 */
	public Class<?> getBeanClass();
	
	/**
	 * 创建策略
	 * @return
	 */
	public BeanCreatePolicy getBeanCreatePolicy();
	
	/**
	 * 获取 bean 的对象，规则如下：
	 * 1）已经是单例策略，则只会创建一个（即已经创建的，就会重用这一个）
	 * 2）如果是多例策略，每次调用本方法都会创建一个
	 * 
	 * @return
	 */
	public Object getInstance();
	
	/**
	 * 是否可以实例化，如果可以创建实例，则返回 true, 如果不能就返回 false
	 * 
	 * @return
	 */
	public boolean canInstance();
	
	
}
